home *** CD-ROM | disk | FTP | other *** search
/ Aminet 37 / Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso / Aminet / dev / lang / sofa.lha / sofa / smalleiffel / lib_std / file_tools.e < prev    next >
Text File  |  2000-03-25  |  3KB  |  124 lines

  1. -- This file is  free  software, which  comes  along  with  SmallEiffel. This
  2. -- software  is  distributed  in the hope that it will be useful, but WITHOUT 
  3. -- ANY  WARRANTY;  without  even  the  implied warranty of MERCHANTABILITY or
  4. -- FITNESS  FOR A PARTICULAR PURPOSE. You can modify it as you want, provided
  5. -- this header is kept unaltered, and a notification of the changes is added.
  6. -- You  are  allowed  to  redistribute  it and sell it, alone or as a part of 
  7. -- another product.
  8. --          Copyright (C) 1994-98 LORIA - UHP - CRIN - INRIA - FRANCE
  9. --            Dominique COLNET and Suzanne COLLIN - colnet@loria.fr 
  10. --                       http://SmallEiffel.loria.fr
  11. --
  12. expanded class FILE_TOOLS
  13.  
  14. inherit ANY;
  15.  
  16. feature
  17.  
  18.    same_files(path1, path2: STRING): BOOLEAN is
  19.          -- True if the `path1' file exists and has the very same content 
  20.          -- as file `path2'.
  21.       require else
  22.          path1 /= Void;
  23.          path2 /= Void
  24.       do
  25.          std_fr1.connect_to(path1);
  26.          if std_fr1.is_connected then
  27.             std_fr2.connect_to(path2);
  28.             if std_fr2.is_connected then
  29.                Result := std_fr1.same_as(std_fr2);
  30.         else
  31.            std_fr1.disconnect;
  32.             end;
  33.          end;
  34.       end;
  35.  
  36.    is_readable(path: STRING): BOOLEAN is
  37.          -- True if `path' file exists and is a readable file.
  38.       require
  39.          path /= Void
  40.       do
  41.          std_fr1.connect_to(path);
  42.          Result := std_fr1.is_connected;
  43.          if Result then
  44.             std_fr1.disconnect;
  45.          end;
  46.       end;
  47.  
  48.    is_empty(path: STRING): BOOLEAN is
  49.          -- True if `path' file exists, is readable and is an empty file.
  50.       do
  51.          std_fr1.connect_to(path);
  52.          if std_fr1.is_connected then
  53.             std_fr1.read_character;
  54.             Result := std_fr1.end_of_input;
  55.             std_fr1.disconnect;
  56.          end;
  57.       end;
  58.  
  59.    rename_to(old_path, new_path: STRING) is
  60.          -- Try to change the name or the location of a file.
  61.       require
  62.          old_path /= Void;
  63.          new_path /= Void
  64.       local
  65.          p1, p2: POINTER;
  66.       do
  67.          if file_exists(new_path) then
  68.             delete(new_path);
  69.          end;
  70.          p1 := old_path.to_external;
  71.          p2 := new_path.to_external;
  72.          se_rename(p1,p2);
  73.       end;
  74.  
  75.    delete(path: STRING) is
  76.          -- Try to delete the given `path' file.
  77.       require
  78.          path /= Void
  79.       local
  80.          p: POINTER;
  81.       do
  82.          p := path.to_external;
  83.          se_remove(p);
  84.       end;
  85.  
  86.    mkdir(name: STRING) is
  87.       obsolete "This feature will be soon removed (see work in progress%N%
  88.                %in class BASIC_DIRECTORY)." 
  89.       local
  90.          p: POINTER;
  91.       do
  92.          p := name.to_external;
  93.          c_inline_c("mkdir((char*)_p,511);");
  94.       end;
  95.  
  96. feature {NONE}
  97.  
  98.    se_remove(path: POINTER) is
  99.          -- To implement `delete'.
  100.       external "SmallEiffel"
  101.       end;
  102.  
  103.    se_rename(old_path, new_path: POINTER) is
  104.       external "SmallEiffel"
  105.       end;
  106.  
  107.    std_fr1: STD_FILE_READ is
  108.       once
  109.          !!Result.make;
  110.       end;
  111.  
  112.    std_fr2: STD_FILE_READ is
  113.       once
  114.          !!Result.make;
  115.       end;
  116.    
  117.    tmp_string: STRING is
  118.       once
  119.          !!Result.make(256);
  120.       end;
  121.  
  122. end -- FILE_TOOLS
  123.  
  124.